#pragma once

#include <cstring>

#include "r_socket.h"

namespace eniac
{

class r_socket_ipv4_udp_server final
{
public:
    r_socket_ipv4_udp_server() = delete;
    r_socket_ipv4_udp_server(const r_socket_ipv4_udp_server&) = delete;
    r_socket_ipv4_udp_server(r_socket_ipv4_udp_server&&) = delete;
    r_socket_ipv4_udp_server& operator=(const r_socket_ipv4_udp_server&) = delete;
    r_socket_ipv4_udp_server& operator=(r_socket_ipv4_udp_server&&) = delete;

    static r_socket_proxy_ret_t set_socket_property(const r_socket::ptr socket, r_socket_property_type type, void* property, size_t property_size);

private:
    static r_socket_proxy_ret_t set_socket_own_address(const r_socket::ptr socket, void* property, size_t property_size);
    static r_socket_proxy_ret_t set_socket_own_port(const r_socket::ptr socket, void* property, size_t property_size);
};


}